<?php

namespace App\Libs;

class HttpCurlLibrary
{

    const METHOD_GET = 'GET';
  
    /**
     * http请求接口封装
     */
    public static function request($url, $data, $method = 'POST', $header = [], $time_out = 60)
    {
        
        $defaults = [
            CURLOPT_HEADER => 0,  //输出返回头信息 false 关闭
            CURLOPT_HTTPHEADER => ['Content-Type: application/json'], //header头信息
            CURLOPT_RETURNTRANSFER => 1, //如果成功只将结果返回，不自动输出任何内容。
            CURLOPT_TIMEOUT => $time_out, //设置超时，从服务器接收缓冲完成前需要等待多长时间
            CURLOPT_CONNECTTIMEOUT => 30,//在成功连接服务器前等待多久
            CURLOPT_SSL_VERIFYPEER => 0,//部分链接url要以https协议进行，设定以跳过证书验证
            CURLOPT_SSL_VERIFYHOST => 0, //从证书中检查SSL加密算法是否存在
        ];
        if ($method == 'POST') {
            $defaults[CURLOPT_POST] = 1; //true时发送post请求；
            $defaults[CURLOPT_POSTFIELDS] = is_array($data) ? json_encode($data) : $data;
            $defaults[CURLOPT_URL] = $url;
        } else {
            $defaults[CURLOPT_URL] = $url . '?' . http_build_query($data);
        }
        $ch = curl_init();//初始化curl
        curl_setopt_array($ch, $defaults);
        $result = curl_exec($ch); //执行curl请求
        if (curl_errno($ch)) {
            return curl_error($ch);
        }
        curl_close($ch);
        return $result;
    }

}